/**
 * 环形链表
 * 思路：快慢指针
 * 1. 定义快慢指针，快指针每次走两步，慢指针每次走一步
 * 2. 如果链表有环，快慢指针一定会相遇，这是因为快指针追慢指针，追得快，所以一定会相遇
 * 3. 如果链表没有环，快指针会先到达终点
 */

const hasCycle = function (head) {
    if (!head || !head.next) return false;
    let slow = head;
    let fast = head.next;
    while (slow !== fast) {
        if (!fast || !fast.next) return false;
        slow = slow.next;
        fast = fast.next.next;
    }
    return true;
}